// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({
  // env:"cloud1-2guh9tam1ee71336" //手动选择环境变量
  env: cloud.DYNAMIC_CURRENT_ENV //默认当前选择的环境
})

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  const db = cloud.database()
  let parameter = event.parameter //判断需要查寻什么
  let status  =  event.status //申请招募的状态类型
  if(event.parameter==="getApplications"){  //分页获取用户的全部的申请信息 
    const MAX_LIMIT = 8  //一次查询3条数据
    const countResult = await db.collection('applicant').where({
      userId:wxContext.OPENID
    }).count()  //计算有多少条数据
    const total = countResult.total    //得到表数据总数
    // 计算需要分几次 读取数据
    const batchTimes = Math.ceil(total / MAX_LIMIT)
    var tasks = [] //用来存放每次查询的结果
    for (let i = 0; i < batchTimes; i++) {
      await db.collection('applicant')
      .orderBy('createTime','desc')
      .skip(i * MAX_LIMIT)  //跳过已经查询过的数据
      .limit(MAX_LIMIT)  //每次查询多少数据
      .where({
        userId:wxContext.OPENID
      })
      .get()
      .then(res=>{
        // console.log('第'+(i+1)+'页',res)
        tasks = tasks.concat(res.data)
      })
    }
    // console.log(tasks)
    return tasks
  }else if(parameter==="getApplicationList"){
    return db.collection('applicant').where({  //根据用户id和状态查询
      userId:wxContext.OPENID,
      applicationStatus:status
    }).get()
  }else if(parameter==="getUser"){
    return db.collection('user').where({  //根据用户id查询用户信息
      openId:wxContext.OPENID,
    }).get()
  }else if(parameter==="updateUserByOpenId"){
    return db.collection('user').where({  //根据用户id更新用户信息
      openId:wxContext.OPENID,
    }).update({
      data: {
        class:event.user.class,
        email:event.user.email,
        name:event.user.name,
        nickName:event.user.nickName,
        studentId:event.user.studentId,
        telephone:event.user.telephone,
      },
    })
  }else if(parameter==="addUser"){
    return db.collection('user')
    .add({
      data: {
        class:event.class,
        email:event.email,
        name:event.name,
        nickName:event.nickName,
        studentId:event.studentId,
        telephone:event.telephone,
        openId:wxContext.OPENID,
        isAdmin:0,    //是否为管理员 0不是
      },
    })
  }else if(parameter==="addCollection"){   //添加收藏
    return db.collection('collection')
    .add({
      data: {
        userId:wxContext.OPENID,
        recruitId:event.recruitId,
        recruit:event.recruit,
        createTime:Date.parse(new Date())/1000 ,            //创建时间
      },
    })
  }else if(parameter==="deleteCollection"){   //取消收藏 更具用户id和招募id进行删除
    return db.collection('collection').where({
      userId:wxContext.OPENID,
      recruitId:event.recruitId,
    }).remove()
  }else if(parameter==="queryCollection"){   //判断是否收藏
    return db.collection('collection').where({
      userId:wxContext.OPENID,
      recruitId:event.recruitId,
    }).get()
  }else if(parameter==="queryUserAllCollection"){   //查询用户全部收藏
    const MAX_LIMIT = 8  //一次查询3条数据
    const countResult = await db.collection('collection').where({
      userId:wxContext.OPENID
    }).count()  //计算有多少条数据
    const total = countResult.total    //得到表数据总数
    // 计算需要分几次 读取数据
    const batchTimes = Math.ceil(total / MAX_LIMIT)
    var tasks = [] //用来存放每次查询的结果
    for (let i = 0; i < batchTimes; i++) {
      await db.collection('collection')
      .orderBy('createTime','desc')
      .skip(i * MAX_LIMIT)  //跳过已经查询过的数据
      .limit(MAX_LIMIT)  //每次查询多少数据
      .where({
        userId:wxContext.OPENID
      })
      .get()
      .then(res=>{
        // console.log('第'+(i+1)+'页',res)
        tasks = tasks.concat(res.data)
      })
    }
    // console.log(tasks)
    return tasks
  }else{
    return "err"
  }
}